(module
 (global $global_pair (mut (i32 i64)) (tuple.make (i32.const 0) (i64.const 0)))
 (func $pair (export "pair") (result i32 i64)
  (tuple.make
   (i32.const 42)
   (i64.const 7)
  )
 )
 (func (export "tuple-local") (result i32 i64)
  (local $x (i32 i64))
  (local.get $x)
 )
 (func (export "tuple-global-get") (result i32 i64)
  (global.get $global_pair)
 )
 (func (export "tuple-global-set")
  (global.set $global_pair
   (tuple.make
    (i32.const 42)
    (i64.const 7)
   )
  )
 )
 (func (export "tail-call") (result i32 i64)
  (return_call $pair)
  (unreachable)
 )
)

(assert_return (invoke "pair") (tuple.make (i32.const 42) (i64.const 7)))
(assert_return (invoke "tuple-local") (tuple.make (i32.const 0) (i64.const 0)))
(assert_return (invoke "tuple-global-get") (tuple.make (i32.const 0) (i64.const 0)))
(assert_return (invoke "tuple-global-set"))
(assert_return (invoke "tuple-global-get") (tuple.make (i32.const 42) (i64.const 7)))
(assert_return (invoke "tail-call") (tuple.make (i32.const 42) (i64.const 7)))
